package com.crazypos.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.crazypos.pojo.PermissionEntity;
import com.crazypos.pojo.RoleEntity;
import com.crazypos.pojo.UserRoleEntity;
import com.crazypos.pojo.bo.CreateRoleBO;
import com.crazypos.pojo.bo.UpdateRoleBO;
import com.crazypos.pojo.vo.RoleAndPermissionVO;
import com.crazypos.pojo.vo.RoleDetailVO;
import com.crazypos.pojo.vo.RoleMenuVO;
import com.crazypos.pojo.vo.UserRoleVO;

import java.util.List;

public interface IRoleService extends IService<RoleEntity> {
    List<RoleAndPermissionVO> initGetAllRolesAndPermissions();

    UserRoleVO getRoleByUserId(String userId);

    List<String> getPermissionByRoleId(String roleId, String organizationId);

    IPage<RoleEntity> getRolesList(Integer startPage, Integer pageSize, String name, String organizationId);

    void createRole(CreateRoleBO bo, String userId, String organizationId);

    void deleteRole(String roleId, String organizationId);

    void updateRole(UpdateRoleBO bo, String userId, String organizationId);

    List<RoleMenuVO> getRoleMenu(String roleId, Integer menuType, String organizationId);

    IPage<RoleAndPermissionVO> getRolesWithPermissions(Integer startPage, Integer pageSize, String name, String organizationId);

    RoleDetailVO getRoleByRoleId(String organizationId, String roleId);
}
